package com.ruoyi.api.yh.blood;

import cn.hutool.core.util.NumberUtil;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.ruoyi.api.yh.version.ApiVersion;
import com.ruoyi.common.yh.api.R;
import com.ruoyi.common.yh.api.aop.LoginRequired;
import com.ruoyi.common.yh.api.dtovo.blood.ArticleInfoVO;
import com.ruoyi.common.yh.api.dtovo.blood.BloodImageVO;
import com.ruoyi.common.yh.api.dtovo.blood.YhBingliInfoVO;
import com.ruoyi.common.yh.api.util.ApiUserUtils;
import com.ruoyi.yh.domain.YhArticleInfo;
import com.ruoyi.yh.domain.YhBingliInfo;
import com.ruoyi.yh.service.IYhBingliInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.dozer.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@ApiSupport(order = 0)
@Api(tags="文章")
@RestController
@ApiVersion(1)
@RequestMapping("/{version}/app-api/bingli")
public class YhBingliInfoApiController {
    @Autowired
    private IYhBingliInfoService yhBingliInfoService;
    @Autowired
    private Mapper dozerMapper;
    @LoginRequired
    @ApiOperation("保存病例")
    @ApiOperationSupport(author = "cmm",order = 0)
    @RequestMapping(value = "/saveBingli",method = RequestMethod.POST)
    public R<String> saveBingli(@RequestBody YhBingliInfoVO yhBingliInfoVO)
    {

        System.out.printf(yhBingliInfoVO.toString());

        Date date=new Date();
        DateFormat format = new SimpleDateFormat("yyMMddHHmmssSSS");
        String time = format.format(date);
       /* int hashCodeV = UUID.randomUUID().toString().hashCode();
        if (hashCodeV < 0) {//有可能是负数
            hashCodeV = -hashCodeV;
        }*/
        // 0 代表前面补充0
        // 4 代表长度为4
        // d 代表参数为正数型
        /*return "FD"+time + String.format("%011d", hashCodeV);*/
        String phone="111";//后期获取用户信息
        String order= "YH"+phone+time;
        YhBingliInfo yhBingliInfo=dozerMapper.map(yhBingliInfoVO, YhBingliInfo.class);
        yhBingliInfo.setStatus("1");
        yhBingliInfo.setCreateTime(new Date());
        yhBingliInfo.setOrderNo(order);
        yhBingliInfo.setPayPrice(NumberUtil.toBigDecimal(68));
        yhBingliInfo.setUserId(ApiUserUtils.getUserId());
        yhBingliInfo.setPayType("1");
        yhBingliInfo.setBiliTime(new Date());
        yhBingliInfo.setDiseaseDesc(yhBingliInfoVO.getDiseaseDesc());
        yhBingliInfo.setWage(yhBingliInfoVO.getWage());
       // yhBingliInfo.setFatherName(yhBingliInfoVO.getFatherName());
        yhBingliInfoService.insertYhBingliInfo(yhBingliInfo);
        return R.ok(order,"保存病例");
    }
    /**
     *
     *
     */
    @LoginRequired
    @ApiOperation("获取待支付订单信息")
    @ApiOperationSupport(author = "cmm",order = 0)
    @RequestMapping(value = "/getBloddInfoNopayById",method = RequestMethod.GET)
    public R<YhBingliInfoVO> getBloddInfoNopayById(@ApiParam(name="orderNo",value = "订单ID",required = true)@RequestParam String orderNo)
    {
      if(orderNo==null){
          return R.fail("不能为空");
      }
        YhBingliInfo yhBingliInfo=yhBingliInfoService.selectYhBingliInfoByOrderNo(orderNo);
      if(yhBingliInfo==null){
          return R.fail("无此订单");
      }
      if(!yhBingliInfo.getStatus().equals("1")){
          return R.fail("订单无效");
      }
      /*  YhBingliInfoVO yhBingliInfoVO=new YhBingliInfoVO();*/
        YhBingliInfoVO yhBingliInfoVO=dozerMapper.map(yhBingliInfo, YhBingliInfoVO.class);
        yhBingliInfoVO.setPayPrice(yhBingliInfo.getPayPrice());
        yhBingliInfoVO.setPayType(yhBingliInfo.getPayType());
        yhBingliInfoVO.setOrderNo(yhBingliInfo.getOrderNo());

        return R.ok(yhBingliInfoVO,"获取待支付订单信息");
    }
    @LoginRequired
    @ApiOperation("获取订单信息")
    @ApiOperationSupport(author = "cmm",order = 0)
    @RequestMapping(value = "/getBloddInfoById",method = RequestMethod.GET)
    public R<YhBingliInfoVO> getBloddInfoById(@ApiParam(name="orderNo",value = "订单号",required = true)@RequestParam String orderNo)
    {
        if(orderNo==null){
            return R.fail("不能为空");
        }
        YhBingliInfo yhBingliInfo=yhBingliInfoService.selectYhBingliInfoByOrderNo(orderNo);
        if(yhBingliInfo==null){
            return R.fail("无此订单");
        }
        YhBingliInfoVO yhBingliInfoVO=dozerMapper.map(yhBingliInfo, YhBingliInfoVO.class);
        return R.ok(yhBingliInfoVO,"获取订单信息");
    }
    @LoginRequired
    @ApiOperation("获取订单列表")
    @ApiOperationSupport(author = "cmm",order = 0)
    @RequestMapping(value = "/getbingliInfoList",method = RequestMethod.GET)
    public R< List<YhBingliInfoVO>> getbingliInfoList()
    {

        YhBingliInfo yhBingliInfoQuery=new YhBingliInfo();
        yhBingliInfoQuery.setUserId(ApiUserUtils.getUserId());
        List<YhBingliInfo> yhBingliInfos=yhBingliInfoService.selectYhBingliInfoList(yhBingliInfoQuery);
        List<YhBingliInfoVO>  yhBingliInfoVOs=new ArrayList<>();
        for(YhBingliInfo yhBingliInfo: yhBingliInfos){
            YhBingliInfoVO yhBingliInfoVO=dozerMapper.map(yhBingliInfo, YhBingliInfoVO.class);
            yhBingliInfoVOs.add(yhBingliInfoVO);
        }

        return R.ok(yhBingliInfoVOs,"获取订单列表");
    }
}
